光源节点可用于为您的Kanzi 应用程序场景 (Scene) 创建光源。
Kanzi 有以下光源节点类型:
光源包含在 Kanzi 渲染 3D 节点时作为 uniform 传送给着色器的属性。光源只会影响将材质与使用那些光源的着色器配合使用的那些节点的渲染。在 Kanzi 中,冯氏 (Phong) 材质类型默认支持一个方向光、两个点光源和一个聚光灯。请参阅为材质类型设置光源数量。
要创建光源节点:
对于每个材质类型,您可以设置基于这些材质类型的那些材质可用于渲染节点的光源类型和数量。
要为材质类型设置光源数量:
要创建并设置方向光:
//创建一个名为 Directional light 的方向光。 LightSharedPtr directionalLight = Light::createDirectional(domain, "Directional light"); //将方向光节点围绕 x 轴旋转 -45 度。 SRTValue3D layoutTransformation = directionalLight->getLayoutTransformation(); layoutTransformation.setRotation(Vector3(kzsDegreesToRadians(-45.0f), 0.0f, 0.0f)); directionalLight->setLayoutTransformation(layoutTransformation); //将方向光的颜色设置为红色。 directionalLight->setDirectionalLightColor(ThemeRed);
要创建并设置点光源:
//创建一个名为 Point light 的点光源。 LightSharedPtr pointLight = Light::createPoint(domain, "Point light"); //将 y 轴上的点光源移动 4 个单位。 SRTValue3D layoutTransformation = pointLight->getLayoutTransformation(); layoutTransformation.setTranslation(Vector3(0.0f, 4.0f, 0.0f)); pointLight->setLayoutTransformation(layoutTransformation); //将点光源的颜色设置为绿色。 pointLight->setPointLightColor(ThemeGreen); //将点光源的恒定衰减设置为 0.8,并将线性衰减和二次衰减设置为 0。 pointLight->setPointLightAttenuation(Vector3(0.8f, 0.0f, 0.0f));
要创建并设置聚光灯:
//创建一个名为 Spot light 的聚光灯。 LightSharedPtr spotLight = Light::createSpot(domain, "Spot light"); //将 x 轴上的聚光灯移动 4 个单位,并将其围绕 y 轴旋转 90 度。 SRTValue3D layoutTransformation = spotLight->getLayoutTransformation(); layoutTransformation.setTranslation(Vector3(4.0f, 0.0f, 0.0f)); layoutTransformation.setRotation(Vector3(0.0f, kzsDegreesToRadians(90.0f), 0.0f)); spotLight->setLayoutTransformation(layoutTransformation); //将聚光灯的颜色设置为蓝色。 spotLight->setSpotLightColor(ThemeBlue); //将聚光灯椎体的角度设置为 45 度。 spotLight->setSpotLightCutoffAngle(45.0f); //设置聚光灯如何聚光。 spotLight->setSpotLightExponent(30.0f); //将聚光灯的恒定衰减设置为 1.3,并将线性衰减和二次衰减设置为 0。 spotLight->setSpotLightAttenuation(Vector3(1.3f, 0.0f, 0.0f));
有关详细信息,请参阅 API reference中的 Light
类。
要查看光源节点可用属性类型的完整列表,请参阅: